import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
from raceplotly.plots import barplot
races_data = pd.read_csv('races.csv')
diverstanding_data = pd.read_csv('driver_standings.csv')
drivers_data = pd.read_csv('drivers.csv')
constructorstanding_data = pd.read_csv('constructor_standings.csv')
constructors_data = pd.read_csv('constructors.csv')
constructor_race_data = pd.read_csv('constructor_results.csv')
data_2011 = races_data.where(races_data['year']==2011).dropna()
data_2011 = data_2011.merge(diverstanding_data,on='raceId').dropna()
data_2011 = data_2011.merge(drivers_data,on='driverId').dropna()
data_2011.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2011 = data_2011.sort_values(['round','position'])
data_2011
| year | round | circuitId | name | points | position | positionText | wins | driverRef | code | forename | surname | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 361 | 2011.0 | 1.0 | 1.0 | Australian Grand Prix | 25.0 | 1 | 1 | 1 | vettel | VET | Sebastian | Vettel |
| 342 | 2011.0 | 1.0 | 1.0 | Australian Grand Prix | 18.0 | 2 | 2 | 0 | hamilton | HAM | Lewis | Hamilton |
| 323 | 2011.0 | 1.0 | 1.0 | Australian Grand Prix | 15.0 | 3 | 3 | 0 | petrov | PET | Vitaly | Petrov |
| 304 | 2011.0 | 1.0 | 1.0 | Australian Grand Prix | 12.0 | 4 | 4 | 0 | alonso | ALO | Fernando | Alonso |
| 285 | 2011.0 | 1.0 | 1.0 | Australian Grand Prix | 10.0 | 5 | 5 | 0 | webber | WEB | Mark | Webber |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 132 | 2011.0 | 19.0 | 18.0 | Brazilian Grand Prix | 0.0 | 24 | 24 | 0 | ambrosio | DAM | Jérôme | d'Ambrosio |
| 113 | 2011.0 | 19.0 | 18.0 | Brazilian Grand Prix | 0.0 | 25 | 25 | 0 | glock | GLO | Timo | Glock |
| 451 | 2011.0 | 19.0 | 18.0 | Brazilian Grand Prix | 0.0 | 26 | 26 | 0 | karthikeyan | KAR | Narain | Karthikeyan |
| 475 | 2011.0 | 19.0 | 18.0 | Brazilian Grand Prix | 0.0 | 27 | 27 | 0 | ricciardo | RIC | Daniel | Ricciardo |
| 485 | 2011.0 | 19.0 | 18.0 | Brazilian Grand Prix | 0.0 | 28 | 28 | 0 | chandhok | CHA | Karun | Chandhok |
494 rows × 12 columns
data_teams_2011 = races_data.where(races_data['year']==2011).dropna()
data_teams_2011 = data_teams_2011.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2011 = data_teams_2011.merge(constructors_data,on='constructorId').dropna()
data_teams_2011.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2011 = data_teams_2011.sort_values(['round','position'])
data_teams_2011
| year | round | circuitId | name_x | points | position | positionText | wins | constructorRef | name_y | |
|---|---|---|---|---|---|---|---|---|---|---|
| 171 | 2011.0 | 1.0 | 1.0 | Australian Grand Prix | 35.0 | 1 | 1 | 1 | red_bull | Red Bull |
| 152 | 2011.0 | 1.0 | 1.0 | Australian Grand Prix | 26.0 | 2 | 2 | 0 | mclaren | McLaren |
| 114 | 2011.0 | 1.0 | 1.0 | Australian Grand Prix | 18.0 | 3 | 3 | 0 | ferrari | Ferrari |
| 133 | 2011.0 | 1.0 | 1.0 | Australian Grand Prix | 15.0 | 4 | 4 | 0 | renault | Renault |
| 95 | 2011.0 | 1.0 | 1.0 | Australian Grand Prix | 4.0 | 5 | 5 | 0 | toro_rosso | Toro Rosso |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 113 | 2011.0 | 19.0 | 18.0 | Brazilian Grand Prix | 41.0 | 8 | 8 | 0 | toro_rosso | Toro Rosso |
| 37 | 2011.0 | 19.0 | 18.0 | Brazilian Grand Prix | 5.0 | 9 | 9 | 0 | williams | Williams |
| 75 | 2011.0 | 19.0 | 18.0 | Brazilian Grand Prix | 0.0 | 10 | 10 | 0 | lotus_racing | Lotus |
| 225 | 2011.0 | 19.0 | 18.0 | Brazilian Grand Prix | 0.0 | 11 | 11 | 0 | hrt | HRT |
| 56 | 2011.0 | 19.0 | 18.0 | Brazilian Grand Prix | 0.0 | 12 | 12 | 0 | virgin | Virgin |
226 rows × 10 columns
teams_color_2011 = {'Red Bull':dict(color='#004c6c'),
'McLaren':dict(color='#FF8700'),
'Ferrari':dict(color='#C00000'),
'Mercedes':dict(color='#00D2BE'),
'Renault':dict(color='#FFF500'),
'Williams':dict(color='#0082FA'),
'Toro Rosso':dict(color='#011AE3'),
'Force India':dict(color='#F596C8'),
'Lotus':dict(color='#000000'),
'Sauber':dict(color='#960000'),
'HRT':dict(color='#5d4b25'),
'Virgin':dict(color='#ff2e15')
}
driver_teams_color_2011 = {'VET':dict(color='#004c6c',dash='solid'),
'WEB':dict(color='#004c6c',dash='dash'),
'HAM':dict(color='#FF8700',dash='solid'),
'BUT':dict(color='#FF8700',dash='dash'),
'ALO':dict(color='#C00000',dash='solid'),
'MAS':dict(color='#C00000',dash='dash'),
'ROS':dict(color='#00D2BE',dash='solid'),
'MSC':dict(color='#00D2BE',dash='dash'),
'HEI':dict(color='#FFF500',dash='solid'),
'SEN':dict(color='#FFF500',dash='dash'),
'PET':dict(color='#FFF500',dash='dashdot'),
'BAR':dict(color='#0082FA',dash='solid'),
'MAL':dict(color='#0082FA',dash='dash'),
'SUT':dict(color='#F596C8',dash='solid'),
'DIR':dict(color='#F596C8',dash='dash'),
'KOB':dict(color='#960000',dash='solid'),
'PER':dict(color='#960000',dash='dash'),
'DLR':dict(color='#960000',dash='dashdot'),
'BUE':dict(color='#011AE3',dash='solid'),
'ALG':dict(color='#011AE3',dash='dash'),
'KOV':dict(color='#000000',dash='solid'),
'TRU':dict(color='#000000',dash='dash'),
'CHA':dict(color='#000000',dash='dashdot'),
'KAR':dict(color='#5d4b25',dash='solid'),
'RIC':dict(color='#5d4b25',dash='dash'),
'LIU':dict(color='#5d4b25',dash='dashdot'),
'GLO':dict(color='#ff2e15',dash='solid'),
'DAM':dict(color='#ff2e15',dash='dash')
}
constructors = data_teams_2011['name_y'].unique()
drivers = data_2011['code'].unique()
c = data_2011.groupby(by='code').max().sort_values('points',ascending=False)
c['Final'] = range(1,len(c['year'])+1)
c = c['Final']
data_2011 = data_2011.merge(c,on='code').sort_values(['round','Final'])
fig = px.bar(data_2011, x="code", y="points", color="code",
animation_frame="name", animation_group="code", range_y=[0,400])
fig.show()
#data_teams_2011.rename({'name_y':'team','name_x':'race'}, axis=1, inplace=True)
c = data_teams_2011.groupby(by='name_y').max().sort_values('points',ascending=False)
c['Final'] = range(1,len(c['year'])+1)
c = c['Final']
data_teams_2011 = data_teams_2011.merge(c,on='name_y').sort_values(['round','Final'])
fig = px.bar(data_teams_2011, x="name_y", y="points",color='name_y',
animation_frame="name_x", animation_group="name_y", range_y=[0,650])
fig.show()
fig1 = go.Figure()
fig2 = go.Figure()
for i in drivers:
d = data_2011.where(data_2011['code'] == i).dropna()
fig1.add_trace(go.Scatter(x=d['name'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=driver_teams_color_2011[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2011[i]['dash'])))
fig2.add_trace(go.Scatter(x=d['name'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=driver_teams_color_2011[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2011[i]['dash'])))
fig1.show()
fig2['layout']['yaxis']['autorange'] = "reversed"
fig2.show()
fig3 = go.Figure()
fig4 = go.Figure()
for i in constructors:
d = data_teams_2011.where(data_teams_2011['name_y'] == i).dropna()
fig3.add_trace(go.Scatter(x=d['name_x'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=teams_color_2011[i]['color'],opacity=0.75)))
fig4.add_trace(go.Scatter(x=d['name_x'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=teams_color_2011[i]['color'],opacity=0.75)))
fig3.show()
fig4['layout']['yaxis']['autorange'] = "reversed"
fig4.show()
teams_color_2012 = {'Red Bull':dict(color='#004c6c'),
'McLaren':dict(color='#FF8700'),
'Ferrari':dict(color='#C00000'),
'Mercedes':dict(color='#00D2BE'),
'Marussia':dict(color='#6E0000'),
'Williams':dict(color='#0082FA'),
'Toro Rosso':dict(color='#011AE3'),
'Force India':dict(color='#F596C8'),
'Lotus F1':dict(color='#000000'),
'Sauber':dict(color='#960000'),
'HRT':dict(color='#5d4b25'),
'Caterham':dict(color='#3c5749')
}
driver_teams_color_2012 = {'VET':dict(color='#004c6c',dash='solid'),
'WEB':dict(color='#004c6c',dash='dash'),
'HAM':dict(color='#FF8700',dash='solid'),
'BUT':dict(color='#FF8700',dash='dash'),
'ALO':dict(color='#C00000',dash='solid'),
'MAS':dict(color='#C00000',dash='dash'),
'ROS':dict(color='#00D2BE',dash='solid'),
'MSC':dict(color='#00D2BE',dash='dash'),
'RAI':dict(color='#000000',dash='solid'),
'GRO':dict(color='#000000',dash='dash'),
'DAM':dict(color='#000000',dash='dashdot'),
'SEN':dict(color='#0082FA',dash='solid'),
'MAL':dict(color='#0082FA',dash='dash'),
'HUL':dict(color='#F596C8',dash='solid'),
'DIR':dict(color='#F596C8',dash='dash'),
'KOB':dict(color='#960000',dash='solid'),
'PER':dict(color='#960000',dash='dash'),
'RIC':dict(color='#011AE3',dash='solid'),
'VER':dict(color='#011AE3',dash='dash'),
'KOV':dict(color='#3c5749',dash='solid'),
'PET':dict(color='#3c5749',dash='dash'),
'KAR':dict(color='#5d4b25',dash='solid'),
'DLR':dict(color='#5d4b25',dash='dash'),
'GLO':dict(color='#6E0000',dash='solid'),
'PIC':dict(color='#6E0000',dash='dash')
}
data_2012 = races_data.where(races_data['year']==2012).dropna()
data_2012 = data_2012.merge(diverstanding_data,on='raceId').dropna()
data_2012 = data_2012.merge(drivers_data,on='driverId').dropna()
data_2012.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2012 = data_2012.sort_values(['round','position'])
data_2012
drivers = data_2012['code'].unique()
drivers
array(['BUT', 'VET', 'HAM', 'WEB', 'ALO', 'KOB', 'RAI', 'PER', 'RIC',
'DIR', 'VER', 'ROS', 'MAL', 'GLO', 'PIC', 'SEN', 'MAS', 'KOV',
'PET', 'MSC', 'GRO', 'HUL', 'DLR', 'KAR', 'DAM'], dtype=object)
c = data_2012.groupby(by='code').max().sort_values('points',ascending=False)
c['Final'] = range(1,len(c['year'])+1)
c = c['Final']
data_2012 = data_2012.merge(c,on='code').sort_values(['round','Final'])
fig = px.bar(data_2012, x="code", y="points", color="code",
animation_frame="name", animation_group="code", range_y=[0,300])
fig.show()
fig5 = go.Figure()
fig6 = go.Figure()
for i in drivers:
d = data_2012.where(data_2012['code'] == i).dropna().sort_values(by='round')
fig5.add_traces(go.Scatter(x=d['name'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=driver_teams_color_2012[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2012[i]['dash'])))
fig6.add_traces(go.Scatter(x=d['name'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=driver_teams_color_2012[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2012[i]['dash'])))
fig5.show()
fig6['layout']['yaxis']['autorange'] = "reversed"
fig6.show()
data_teams_2012 = races_data.where(races_data['year']==2012).dropna()
data_teams_2012 = data_teams_2012.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2012 = data_teams_2012.merge(constructors_data,on='constructorId').dropna()
data_teams_2012.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2012 = data_teams_2012.sort_values(['round','position'])
constructors = data_teams_2012['name_y'].unique()
data_teams_2012
| year | round | circuitId | name_x | points | position | positionText | wins | constructorRef | name_y | |
|---|---|---|---|---|---|---|---|---|---|---|
| 40 | 2012.0 | 1.0 | 1.0 | Australian Grand Prix | 40.0 | 1 | 1 | 1 | mclaren | McLaren |
| 200 | 2012.0 | 1.0 | 1.0 | Australian Grand Prix | 30.0 | 2 | 2 | 0 | red_bull | Red Bull |
| 160 | 2012.0 | 1.0 | 1.0 | Australian Grand Prix | 12.0 | 3 | 3 | 0 | sauber | Sauber |
| 180 | 2012.0 | 1.0 | 1.0 | Australian Grand Prix | 10.0 | 4 | 4 | 0 | ferrari | Ferrari |
| 140 | 2012.0 | 1.0 | 1.0 | Australian Grand Prix | 6.0 | 5 | 5 | 0 | lotus_f1 | Lotus F1 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 79 | 2012.0 | 20.0 | 18.0 | Brazilian Grand Prix | 76.0 | 8 | 8 | 1 | williams | Williams |
| 139 | 2012.0 | 20.0 | 18.0 | Brazilian Grand Prix | 26.0 | 9 | 9 | 0 | toro_rosso | Toro Rosso |
| 39 | 2012.0 | 20.0 | 18.0 | Brazilian Grand Prix | 0.0 | 10 | 10 | 0 | caterham | Caterham |
| 19 | 2012.0 | 20.0 | 18.0 | Brazilian Grand Prix | 0.0 | 11 | 11 | 0 | marussia | Marussia |
| 238 | 2012.0 | 20.0 | 18.0 | Brazilian Grand Prix | 0.0 | 12 | 12 | 0 | hrt | HRT |
239 rows × 10 columns
c = data_teams_2012.groupby(by='name_y').max().sort_values('points',ascending=False)
c['Final'] = range(1,len(c['year'])+1)
c = c['Final']
data_teams_2012 = data_teams_2012.merge(c,on='name_y').sort_values(['round','Final'])
fig = px.bar(data_teams_2012, x="name_y", y="points",color='name_y',
animation_frame="name_x", animation_group="name_y", range_y=[0,650])
fig.show()
fig7 = go.Figure()
fig8 = go.Figure()
for i in constructors:
d = data_teams_2012.where(data_teams_2012['name_y'] == i).dropna()
fig7.add_trace(go.Scatter(x=d['name_x'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=teams_color_2012[i]['color'],opacity=0.75)))
fig8.add_trace(go.Scatter(x=d['name_x'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=teams_color_2012[i]['color'],opacity=0.75)))
fig7.show()
fig8['layout']['yaxis']['autorange'] = "reversed"
fig8.show()
teams_color_2013 = {'Red Bull':dict(color='#004c6c'),
'McLaren':dict(color='#FF8700'),
'Ferrari':dict(color='#C00000'),
'Mercedes':dict(color='#00D2BE'),
'Marussia':dict(color='#6E0000'),
'Williams':dict(color='#0082FA'),
'Toro Rosso':dict(color='#011AE3'),
'Force India':dict(color='#F596C8'),
'Lotus F1':dict(color='#000000'),
'Sauber':dict(color='#960000'),
'Caterham':dict(color='#3c5749')
}
driver_teams_color_2013 = {'VET':dict(color='#004c6c',dash='solid'),
'WEB':dict(color='#004c6c',dash='dash'),
'BUT':dict(color='#FF8700',dash='solid'),
'PER':dict(color='#FF8700',dash='dash'),
'ALO':dict(color='#C00000',dash='solid'),
'MAS':dict(color='#C00000',dash='dash'),
'HAM':dict(color='#00D2BE',dash='solid'),
'ROS':dict(color='#00D2BE',dash='dash'),
'RAI':dict(color='#000000',dash='solid'),
'GRO':dict(color='#000000',dash='dash'),
'KOV':dict(color='#000000',dash='dashdot'),
'BOT':dict(color='#0082FA',dash='solid'),
'MAL':dict(color='#0082FA',dash='dash'),
'SUT':dict(color='#F596C8',dash='solid'),
'DIR':dict(color='#F596C8',dash='dash'),
'HUL':dict(color='#960000',dash='solid'),
'GUT':dict(color='#960000',dash='dash'),
'RIC':dict(color='#011AE3',dash='solid'),
'VER':dict(color='#011AE3',dash='dash'),
'PIC':dict(color='#3c5749',dash='solid'),
'VDG':dict(color='#3c5749',dash='dash'),
'BIA':dict(color='#6E0000',dash='solid'),
'CHI':dict(color='#6E0000',dash='dash')
}
data_2013 = races_data.where(races_data['year']==2013).dropna()
data_2013 = data_2013.merge(diverstanding_data,on='raceId').dropna()
data_2013 = data_2013.merge(drivers_data,on='driverId').dropna()
data_2013.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2013 = data_2013.sort_values(['round','position'])
data_2013
drivers = data_2013['code'].unique()
c = data_2013.groupby(by='code').max().sort_values('points',ascending=False)
c['Final'] = range(1,len(c['year'])+1)
c = c['Final']
data_2013 = data_2013.merge(c,on='code').sort_values(['round','Final'])
fig = px.bar(data_2013, x="code", y="points", color="code",
animation_frame="name", animation_group="code", range_y=[0,400])
fig.show()
fig9 = go.Figure()
fig10 = go.Figure()
for i in drivers:
d = data_2013.where(data_2013['code'] == i).dropna().sort_values(by='round')
fig9.add_traces(go.Scatter(x=d['name'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=driver_teams_color_2013[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2013[i]['dash'])))
fig10.add_traces(go.Scatter(x=d['name'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=driver_teams_color_2013[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2013[i]['dash'])))
fig9.show()
fig10['layout']['yaxis']['autorange'] = "reversed"
fig10.show()
data_teams_2013 = races_data.where(races_data['year']==2013).dropna()
data_teams_2013 = data_teams_2013.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2013 = data_teams_2013.merge(constructors_data,on='constructorId').dropna()
data_teams_2013.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2013 = data_teams_2013.sort_values(['round','position'])
constructors = data_teams_2013['name_y'].unique()
data_teams_2013
| year | round | circuitId | name_x | points | position | positionText | wins | constructorRef | name_y | |
|---|---|---|---|---|---|---|---|---|---|---|
| 19 | 2013.0 | 1.0 | 1.0 | Australian Grand Prix | 30.0 | 1 | 1 | 0 | ferrari | Ferrari |
| 0 | 2013.0 | 1.0 | 1.0 | Australian Grand Prix | 26.0 | 2 | 2 | 1 | lotus_f1 | Lotus F1 |
| 38 | 2013.0 | 1.0 | 1.0 | Australian Grand Prix | 23.0 | 3 | 3 | 0 | red_bull | Red Bull |
| 57 | 2013.0 | 1.0 | 1.0 | Australian Grand Prix | 10.0 | 4 | 4 | 0 | mercedes | Mercedes |
| 76 | 2013.0 | 1.0 | 1.0 | Australian Grand Prix | 10.0 | 5 | 5 | 0 | force_india | Force India |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 151 | 2013.0 | 19.0 | 18.0 | Brazilian Grand Prix | 57.0 | 7 | 7 | 0 | sauber | Sauber |
| 132 | 2013.0 | 19.0 | 18.0 | Brazilian Grand Prix | 33.0 | 8 | 8 | 0 | toro_rosso | Toro Rosso |
| 170 | 2013.0 | 19.0 | 18.0 | Brazilian Grand Prix | 5.0 | 9 | 9 | 0 | williams | Williams |
| 189 | 2013.0 | 19.0 | 18.0 | Brazilian Grand Prix | 0.0 | 10 | 10 | 0 | marussia | Marussia |
| 208 | 2013.0 | 19.0 | 18.0 | Brazilian Grand Prix | 0.0 | 11 | 11 | 0 | caterham | Caterham |
209 rows × 10 columns
c = data_teams_2013.groupby(by='name_y').max().sort_values('points',ascending=False)
c['Final'] = range(1,len(c['year'])+1)
c = c['Final']
data_teams_2013 = data_teams_2013.merge(c,on='name_y').sort_values(['round','Final'])
fig = px.bar(data_teams_2013, x="name_y", y="points",color='name_y',
animation_frame="name_x", animation_group="name_y", range_y=[0,600])
fig.show()
fig11 = go.Figure()
fig12 = go.Figure()
for i in constructors:
d = data_teams_2013.where(data_teams_2013['name_y'] == i).dropna()
fig11.add_trace(go.Scatter(x=d['name_x'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=teams_color_2013[i]['color'],opacity=0.75)))
fig12.add_trace(go.Scatter(x=d['name_x'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=teams_color_2013[i]['color'],opacity=0.75)))
fig11.show()
fig12['layout']['yaxis']['autorange'] = "reversed"
fig12.show()
teams_color_2014 = {'Red Bull':dict(color='#004c6c'),
'McLaren':dict(color='#FF8700'),
'Ferrari':dict(color='#C00000'),
'Mercedes':dict(color='#00D2BE'),
'Marussia':dict(color='#6E0000'),
'Williams':dict(color='#0082FA'),
'Toro Rosso':dict(color='#011AE3'),
'Force India':dict(color='#F596C8'),
'Lotus F1':dict(color='#000000'),
'Sauber':dict(color='#960000'),
'Caterham':dict(color='#3c5749')
}
driver_teams_color_2014 = {'VET':dict(color='#004c6c',dash='solid'),
'RIC':dict(color='#004c6c',dash='dash'),
'BUT':dict(color='#FF8700',dash='solid'),
'MAG':dict(color='#FF8700',dash='dash'),
'ALO':dict(color='#C00000',dash='solid'),
'RAI':dict(color='#C00000',dash='dash'),
'HAM':dict(color='#00D2BE',dash='solid'),
'ROS':dict(color='#00D2BE',dash='dash'),
'MAL':dict(color='#000000',dash='solid'),
'GRO':dict(color='#000000',dash='dash'),
'BOT':dict(color='#0082FA',dash='solid'),
'MAS':dict(color='#0082FA',dash='dash'),
'PER':dict(color='#F596C8',dash='solid'),
'HUL':dict(color='#F596C8',dash='dash'),
'SUT':dict(color='#960000',dash='solid'),
'GUT':dict(color='#960000',dash='dash'),
'KVY':dict(color='#011AE3',dash='solid'),
'VER':dict(color='#011AE3',dash='dash'),
'ERI':dict(color='#3c5749',dash='solid'),
'STE':dict(color='#3c5749',dash='dash'),
'KOB':dict(color='#3c5749',dash='dashdot'),
'LOT':dict(color='#3c5749',dash='dot'),
'BIA':dict(color='#6E0000',dash='solid'),
'CHI':dict(color='#6E0000',dash='dash')
}
data_2014 = races_data.where(races_data['year']==2014).dropna()
data_2014 = data_2014.merge(diverstanding_data,on='raceId').dropna()
data_2014 = data_2014.merge(drivers_data,on='driverId').dropna()
data_2014.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2014 = data_2014.sort_values(['round','position'])
data_2014
drivers = data_2014['code'].unique()
c = data_2014.groupby(by='code').max().sort_values('points',ascending=False)
c['Final'] = range(1,len(c['year'])+1)
c = c['Final']
data_2014 = data_2014.merge(c,on='code').sort_values(['round','Final'])
fig = px.bar(data_2014, x="code", y="points", color="code",
animation_frame="name", animation_group="code", range_y=[0,400])
fig.show()
fig13 = go.Figure()
fig14 = go.Figure()
for i in drivers:
d = data_2014.where(data_2014['code'] == i).dropna().sort_values(by='round')
fig13.add_traces(go.Scatter(x=d['name'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=driver_teams_color_2014[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2014[i]['dash'])))
fig14.add_traces(go.Scatter(x=d['name'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=driver_teams_color_2014[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2014[i]['dash'])))
fig13.show()
fig14['layout']['yaxis']['autorange'] = "reversed"
fig14.show()
data_teams_2014 = races_data.where(races_data['year']==2014).dropna()
data_teams_2014 = data_teams_2014.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2014 = data_teams_2014.merge(constructors_data,on='constructorId').dropna()
data_teams_2014.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2014 = data_teams_2014.sort_values(['round','position'])
constructors = data_teams_2014['name_y'].unique()
data_teams_2014
| year | round | circuitId | name_x | points | position | positionText | wins | constructorRef | name_y | |
|---|---|---|---|---|---|---|---|---|---|---|
| 171 | 2014.0 | 1.0 | 1.0 | Australian Grand Prix | 33.0 | 1 | 1 | 0 | mclaren | McLaren |
| 190 | 2014.0 | 1.0 | 1.0 | Australian Grand Prix | 25.0 | 2 | 2 | 1 | mercedes | Mercedes |
| 152 | 2014.0 | 1.0 | 1.0 | Australian Grand Prix | 18.0 | 3 | 3 | 0 | ferrari | Ferrari |
| 133 | 2014.0 | 1.0 | 1.0 | Australian Grand Prix | 10.0 | 4 | 4 | 0 | williams | Williams |
| 114 | 2014.0 | 1.0 | 1.0 | Australian Grand Prix | 9.0 | 5 | 5 | 0 | force_india | Force India |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 113 | 2014.0 | 19.0 | 24.0 | Abu Dhabi Grand Prix | 30.0 | 7 | 7 | 0 | toro_rosso | Toro Rosso |
| 75 | 2014.0 | 19.0 | 24.0 | Abu Dhabi Grand Prix | 10.0 | 8 | 8 | 0 | lotus_f1 | Lotus F1 |
| 56 | 2014.0 | 19.0 | 24.0 | Abu Dhabi Grand Prix | 2.0 | 9 | 9 | 0 | marussia | Marussia |
| 94 | 2014.0 | 19.0 | 24.0 | Abu Dhabi Grand Prix | 0.0 | 10 | 10 | 0 | sauber | Sauber |
| 37 | 2014.0 | 19.0 | 24.0 | Abu Dhabi Grand Prix | 0.0 | 11 | 11 | 0 | caterham | Caterham |
209 rows × 10 columns
fig15 = go.Figure()
fig16 = go.Figure()
for i in constructors:
d = data_teams_2014.where(data_teams_2014['name_y'] == i).dropna()
fig15.add_trace(go.Scatter(x=d['name_x'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=teams_color_2014[i]['color'],opacity=0.75)))
fig16.add_trace(go.Scatter(x=d['name_x'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=teams_color_2014[i]['color'],opacity=0.75)))
fig15.show()
fig16['layout']['yaxis']['autorange'] = "reversed"
fig16.show()
teams_color_2015 = {'Red Bull':dict(color='#004c6c'),
'McLaren':dict(color='#FF8700'),
'Ferrari':dict(color='#C00000'),
'Mercedes':dict(color='#00D2BE'),
'Manor Marussia':dict(color='#6E0000'),
'Williams':dict(color='#0082FA'),
'Toro Rosso':dict(color='#011AE3'),
'Force India':dict(color='#F596C8'),
'Lotus F1':dict(color='#000000'),
'Sauber':dict(color='#960000')
}
driver_teams_color_2015 = {'RIC':dict(color='#004c6c',dash='solid'),
'KVY':dict(color='#004c6c',dash='dash'),
'BUT':dict(color='#FF8700',dash='solid'),
'ALO':dict(color='#FF8700',dash='dash'),
'MAG':dict(color='#FF8700',dash='dashdot'),
'VET':dict(color='#C00000',dash='solid'),
'RAI':dict(color='#C00000',dash='dash'),
'HAM':dict(color='#00D2BE',dash='solid'),
'ROS':dict(color='#00D2BE',dash='dash'),
'MAL':dict(color='#000000',dash='solid'),
'GRO':dict(color='#000000',dash='dash'),
'BOT':dict(color='#0082FA',dash='solid'),
'MAS':dict(color='#0082FA',dash='dash'),
'PER':dict(color='#F596C8',dash='solid'),
'HUL':dict(color='#F596C8',dash='dash'),
'ERI':dict(color='#960000',dash='solid'),
'NAS':dict(color='#960000',dash='dash'),
'VER':dict(color='#011AE3',dash='solid'),
'SAI':dict(color='#011AE3',dash='dash'),
'STE':dict(color='#6E0000',dash='solid'),
'MER':dict(color='#6E0000',dash='dash'),
'RSS':dict(color='#6E0000',dash='dashdot')
}
data_2015 = races_data.where(races_data['year']==2015).dropna()
data_2015 = data_2015.merge(diverstanding_data,on='raceId').dropna()
data_2015 = data_2015.merge(drivers_data,on='driverId').dropna()
data_2015.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2015 = data_2015.sort_values(['round','position'])
data_2015
drivers = data_2015['code'].unique()
c = data_2015.groupby(by='code').max().sort_values('points',ascending=False)
c['Final'] = range(1,len(c['year'])+1)
c = c['Final']
data_2015 = data_2015.merge(c,on='code').sort_values(['round','Final'])
fig = px.bar(data_2015, x="code", y="points", color="code",
animation_frame="name", animation_group="code", range_y=[0,400])
fig.show()
fig17 = go.Figure()
fig18 = go.Figure()
for i in drivers:
d = data_2015.where(data_2015['code'] == i).dropna().sort_values(by='round')
fig17.add_traces(go.Scatter(x=d['name'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=driver_teams_color_2015[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2015[i]['dash'])))
fig18.add_traces(go.Scatter(x=d['name'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=driver_teams_color_2015[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2015[i]['dash'])))
fig17.show()
fig18['layout']['yaxis']['autorange'] = "reversed"
fig18.show()
data_teams_2015 = races_data.where(races_data['year']==2015).dropna()
data_teams_2015 = data_teams_2015.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2015 = data_teams_2015.merge(constructors_data,on='constructorId').dropna()
data_teams_2015.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2015 = data_teams_2015.sort_values(['round','position'])
constructors = data_teams_2015['name_y'].unique()
data_teams_2015
| year | round | circuitId | name_x | points | position | positionText | wins | constructorRef | name_y | |
|---|---|---|---|---|---|---|---|---|---|---|
| 5 | 2015.0 | 1.0 | 1.0 | Australian Grand Prix | 43.0 | 1 | 1 | 1 | mercedes | Mercedes |
| 24 | 2015.0 | 1.0 | 1.0 | Australian Grand Prix | 15.0 | 2 | 2 | 0 | ferrari | Ferrari |
| 62 | 2015.0 | 1.0 | 1.0 | Australian Grand Prix | 14.0 | 3 | 3 | 0 | sauber | Sauber |
| 43 | 2015.0 | 1.0 | 1.0 | Australian Grand Prix | 12.0 | 4 | 4 | 0 | williams | Williams |
| 81 | 2015.0 | 1.0 | 1.0 | Australian Grand Prix | 8.0 | 5 | 5 | 0 | red_bull | Red Bull |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 170 | 2015.0 | 19.0 | 24.0 | Abu Dhabi Grand Prix | 78.0 | 6 | 6 | 0 | lotus_f1 | Lotus F1 |
| 132 | 2015.0 | 19.0 | 24.0 | Abu Dhabi Grand Prix | 67.0 | 7 | 7 | 0 | toro_rosso | Toro Rosso |
| 75 | 2015.0 | 19.0 | 24.0 | Abu Dhabi Grand Prix | 36.0 | 8 | 8 | 0 | sauber | Sauber |
| 151 | 2015.0 | 19.0 | 24.0 | Abu Dhabi Grand Prix | 27.0 | 9 | 9 | 0 | mclaren | McLaren |
| 188 | 2015.0 | 19.0 | 24.0 | Abu Dhabi Grand Prix | 0.0 | 10 | 10 | 0 | manor | Manor Marussia |
189 rows × 10 columns
fig19 = go.Figure()
fig20 = go.Figure()
for i in constructors:
d = data_teams_2015.where(data_teams_2015['name_y'] == i).dropna()
fig19.add_trace(go.Scatter(x=d['name_x'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=teams_color_2015[i]['color'],opacity=0.75)))
fig20.add_trace(go.Scatter(x=d['name_x'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=teams_color_2015[i]['color'],opacity=0.75)))
fig19.show()
fig20['layout']['yaxis']['autorange'] = "reversed"
fig20.show()
teams_color_2016 = {'Red Bull':dict(color='#004c6c'),
'Renault':dict(color='#FFF500'),
'McLaren':dict(color='#FF8700'),
'Ferrari':dict(color='#C00000'),
'Mercedes':dict(color='#00D2BE'),
'Manor Marussia':dict(color='#6E0000'),
'Williams':dict(color='#0082FA'),
'Toro Rosso':dict(color='#011AE3'),
'Force India':dict(color='#F596C8'),
'Haas F1 Team':dict(color='#ed1a3b'),
'Sauber':dict(color='#960000')
}
driver_teams_color_2016 = {'RIC':dict(color='#004c6c',dash='solid'),
'KVY':dict(color='#004c6c',dash='dash'),
'VER':dict(color='#004c6c',dash='dashdot'),
'ALO':dict(color='#FF8700',dash='solid'),
'VAN':dict(color='#FF8700',dash='dash'),
'BUT':dict(color='#FF8700',dash='dashdot'),
'VET':dict(color='#C00000',dash='solid'),
'RAI':dict(color='#C00000',dash='dash'),
'HAM':dict(color='#00D2BE',dash='solid'),
'ROS':dict(color='#00D2BE',dash='dash'),
'GRO':dict(color='#ed1a3b',dash='solid'),
'GUT':dict(color='#ed1a3b',dash='dash'),
'BOT':dict(color='#0082FA',dash='solid'),
'MAS':dict(color='#0082FA',dash='dash'),
'PER':dict(color='#F596C8',dash='solid'),
'HUL':dict(color='#F596C8',dash='dash'),
'ERI':dict(color='#960000',dash='solid'),
'NAS':dict(color='#960000',dash='dash'),
'VER':dict(color='#011AE3',dash='solid'),
'SAI':dict(color='#011AE3',dash='dash'),
'KVY':dict(color='#011AE3',dash='dashdot'),
'HAR':dict(color='#6E0000',dash='solid'),
'WEH':dict(color='#6E0000',dash='dash'),
'OCO':dict(color='#6E0000',dash='dashdot'),
'MAG':dict(color='#FFF500',dash='solid'),
'PAL':dict(color='#FFF500',dash='dash')
}
data_2016 = races_data.where(races_data['year']==2016).dropna()
data_2016 = data_2016.merge(diverstanding_data,on='raceId').dropna()
data_2016 = data_2016.merge(drivers_data,on='driverId').dropna()
data_2016.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2016 = data_2016.sort_values(['round','position'])
data_2016
drivers = data_2016['code'].unique()
c = data_2016.groupby(by='code').max().sort_values('points',ascending=False)
c['Final'] = range(1,len(c['year'])+1)
c = c['Final']
data_2016 = data_2016.merge(c,on='code').sort_values(['round','Final'])
fig = px.bar(data_2016, x="code", y="points", color="code",
animation_frame="name", animation_group="code", range_y=[0,400])
fig.show()
fig21 = go.Figure()
fig22 = go.Figure()
for i in drivers:
d = data_2016.where(data_2016['code'] == i).dropna().sort_values(by='round')
fig21.add_traces(go.Scatter(x=d['name'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=driver_teams_color_2016[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2016[i]['dash'])))
fig22.add_traces(go.Scatter(x=d['name'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=driver_teams_color_2016[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2016[i]['dash'])))
fig21.show()
fig22['layout']['yaxis']['autorange'] = "reversed"
fig22.show()
data_teams_2016 = races_data.where(races_data['year']==2016).dropna()
data_teams_2016 = data_teams_2016.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2016 = data_teams_2016.merge(constructors_data,on='constructorId').dropna()
data_teams_2016.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2016 = data_teams_2016.sort_values(['round','position'])
constructors = data_teams_2016['name_y'].unique()
data_teams_2016
| year | round | circuitId | name_x | points | position | positionText | wins | constructorRef | name_y | |
|---|---|---|---|---|---|---|---|---|---|---|
| 42 | 2016.0 | 1.0 | 1.0 | Australian Grand Prix | 43.0 | 1 | 1 | 1 | mercedes | Mercedes |
| 210 | 2016.0 | 1.0 | 1.0 | Australian Grand Prix | 15.0 | 2 | 2 | 0 | ferrari | Ferrari |
| 168 | 2016.0 | 1.0 | 1.0 | Australian Grand Prix | 14.0 | 3 | 3 | 0 | williams | Williams |
| 189 | 2016.0 | 1.0 | 1.0 | Australian Grand Prix | 12.0 | 4 | 4 | 0 | red_bull | Red Bull |
| 147 | 2016.0 | 1.0 | 1.0 | Australian Grand Prix | 8.0 | 5 | 5 | 0 | haas | Haas F1 Team |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 125 | 2016.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 63.0 | 7 | 7 | 0 | toro_rosso | Toro Rosso |
| 167 | 2016.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 29.0 | 8 | 8 | 0 | haas | Haas F1 Team |
| 104 | 2016.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 8.0 | 9 | 9 | 0 | renault | Renault |
| 20 | 2016.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 2.0 | 10 | 10 | 0 | sauber | Sauber |
| 41 | 2016.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 1.0 | 11 | 11 | 0 | manor | Manor Marussia |
231 rows × 10 columns
fig23 = go.Figure()
fig24 = go.Figure()
for i in constructors:
d = data_teams_2016.where(data_teams_2016['name_y'] == i).dropna()
fig23.add_trace(go.Scatter(x=d['name_x'],
y=d['points'],
name=i,mode='lines+markers',
marker=dict(color=teams_color_2016[i]['color'],opacity=0.75)))
fig24.add_trace(go.Scatter(x=d['name_x'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=teams_color_2016[i]['color'],opacity=0.75)))
fig23.show()
fig24['layout']['yaxis']['autorange'] = "reversed"
fig24.show()
teams_color_2017 = {'Red Bull':dict(color='#004c6c'),
'Renault':dict(color='#FFF500'),
'McLaren':dict(color='#FF8700'),
'Ferrari':dict(color='#C00000'),
'Mercedes':dict(color='#00D2BE'),
'Williams':dict(color='#0082FA'),
'Toro Rosso':dict(color='#011AE3'),
'Force India':dict(color='#F596C8'),
'Haas F1 Team':dict(color='#ed1a3b'),
'Sauber':dict(color='#960000')
}
driver_teams_color_2017 = {'RIC':dict(color='#004c6c',dash='solid'),
'VER':dict(color='#004c6c',dash='dashdot'),
'ALO':dict(color='#FF8700',dash='solid'),
'VAN':dict(color='#FF8700',dash='dash'),
'BUT':dict(color='#FF8700',dash='dashdot'),
'VET':dict(color='#C00000',dash='solid'),
'RAI':dict(color='#C00000',dash='dash'),
'HAM':dict(color='#00D2BE',dash='solid'),
'BOT':dict(color='#00D2BE',dash='dash'),
'GRO':dict(color='#ed1a3b',dash='solid'),
'MAG':dict(color='#ed1a3b',dash='dash'),
'STR':dict(color='#0082FA',dash='solid'),
'MAS':dict(color='#0082FA',dash='dash'),
'DIR':dict(color='#0082FA',dash='dashdot'),
'PER':dict(color='#F596C8',dash='solid'),
'OCO':dict(color='#F596C8',dash='dash'),
'ERI':dict(color='#960000',dash='solid'),
'WEH':dict(color='#960000',dash='dash'),
'GIO':dict(color='#960000',dash='dashdot'),
'GAS':dict(color='#011AE3',dash='solid'),
'SAI':dict(color='#011AE3',dash='dash'),
'KVY':dict(color='#011AE3',dash='dashdot'),
'HAR':dict(color='#011AE3',dash='dot'),
'HUL':dict(color='#FFF500',dash='solid'),
'PAL':dict(color='#FFF500',dash='dash'),
'SAI':dict(color='#FFF500',dash='dashdot')
}
data_2017 = races_data.where(races_data['year']==2017).dropna()
data_2017 = data_2017.merge(diverstanding_data,on='raceId').dropna()
data_2017 = data_2017.merge(drivers_data,on='driverId').dropna()
data_2017.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2017 = data_2017.sort_values(['round','position'])
data_2017
drivers = data_2017['code'].unique()
c = data_2017.groupby(by='code').max().sort_values('points',ascending=False)
c['Final'] = range(1,len(c['year'])+1)
c = c['Final']
data_2017 = data_2017.merge(c,on='code').sort_values(['round','Final'])
fig = px.bar(data_2017, x="code", y="points", color="code",
animation_frame="name", animation_group="code", range_y=[0,400])
fig.show()
fig25 = go.Figure()
fig26 = go.Figure()
for i in drivers:
d = data_2017.where(data_2017['code'] == i).dropna().sort_values(by='round')
fig25.add_traces(go.Scatter(x=d['name'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=driver_teams_color_2017[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2017[i]['dash'])))
fig26.add_traces(go.Scatter(x=d['name'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=driver_teams_color_2017[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2017[i]['dash'])))
fig25.show()
fig26['layout']['yaxis']['autorange'] = "reversed"
fig26.show()
data_teams_2017 = races_data.where(races_data['year']==2017).dropna()
data_teams_2017 = data_teams_2017.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2017 = data_teams_2017.merge(constructors_data,on='constructorId').dropna()
data_teams_2017.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2017 = data_teams_2017.sort_values(['round','position'])
constructors = data_teams_2017['name_y'].unique()
data_teams_2017
| year | round | circuitId | name_x | points | position | positionText | wins | constructorRef | name_y | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2017.0 | 1.0 | 1.0 | Australian Grand Prix | 37.0 | 1 | 1 | 1 | ferrari | Ferrari |
| 20 | 2017.0 | 1.0 | 1.0 | Australian Grand Prix | 33.0 | 2 | 2 | 0 | mercedes | Mercedes |
| 40 | 2017.0 | 1.0 | 1.0 | Australian Grand Prix | 10.0 | 3 | 3 | 0 | red_bull | Red Bull |
| 60 | 2017.0 | 1.0 | 1.0 | Australian Grand Prix | 8.0 | 4 | 4 | 0 | williams | Williams |
| 80 | 2017.0 | 1.0 | 1.0 | Australian Grand Prix | 7.0 | 5 | 5 | 0 | force_india | Force India |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 139 | 2017.0 | 20.0 | 24.0 | Abu Dhabi Grand Prix | 57.0 | 6 | 6 | 0 | renault | Renault |
| 119 | 2017.0 | 20.0 | 24.0 | Abu Dhabi Grand Prix | 53.0 | 7 | 7 | 0 | toro_rosso | Toro Rosso |
| 199 | 2017.0 | 20.0 | 24.0 | Abu Dhabi Grand Prix | 47.0 | 8 | 8 | 0 | haas | Haas F1 Team |
| 179 | 2017.0 | 20.0 | 24.0 | Abu Dhabi Grand Prix | 30.0 | 9 | 9 | 0 | mclaren | McLaren |
| 159 | 2017.0 | 20.0 | 24.0 | Abu Dhabi Grand Prix | 5.0 | 10 | 10 | 0 | sauber | Sauber |
200 rows × 10 columns
fig27 = go.Figure()
fig28 = go.Figure()
for i in constructors:
d = data_teams_2017.where(data_teams_2017['name_y'] == i).dropna()
fig27.add_trace(go.Scatter(x=d['name_x'],
y=d['points'],
name=i,mode='lines+markers',
marker=dict(color=teams_color_2017[i]['color'],opacity=0.75)))
fig28.add_trace(go.Scatter(x=d['name_x'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=teams_color_2017[i]['color'],opacity=0.75)))
fig27.show()
fig28['layout']['yaxis']['autorange'] = "reversed"
fig28.show()
teams_color_2018 = {'Red Bull':dict(color='#004c6c'),
'Renault':dict(color='#FFF500'),
'McLaren':dict(color='#FF8700'),
'Ferrari':dict(color='#C00000'),
'Mercedes':dict(color='#00D2BE'),
'Williams':dict(color='#0082FA'),
'Toro Rosso':dict(color='#011AE3'),
'Force India':dict(color='#F596C8'),
'Haas F1 Team':dict(color='#ed1a3b'),
'Sauber':dict(color='#960000')
}
driver_teams_color_2018 = {'RIC':dict(color='#004c6c',dash='solid'),
'VER':dict(color='#004c6c',dash='dash'),
'ALO':dict(color='#FF8700',dash='solid'),
'VAN':dict(color='#FF8700',dash='dash'),
'VET':dict(color='#C00000',dash='solid'),
'RAI':dict(color='#C00000',dash='dash'),
'HAM':dict(color='#00D2BE',dash='solid'),
'BOT':dict(color='#00D2BE',dash='dash'),
'GRO':dict(color='#ed1a3b',dash='solid'),
'MAG':dict(color='#ed1a3b',dash='dash'),
'STR':dict(color='#0082FA',dash='solid'),
'SIR':dict(color='#0082FA',dash='dash'),
'PER':dict(color='#F596C8',dash='solid'),
'OCO':dict(color='#F596C8',dash='dash'),
'ERI':dict(color='#960000',dash='solid'),
'LEC':dict(color='#960000',dash='dash'),
'GAS':dict(color='#011AE3',dash='solid'),
'HAR':dict(color='#011AE3',dash='dash'),
'HUL':dict(color='#FFF500',dash='solid'),
'SAI':dict(color='#FFF500',dash='dash')
}
data_2018 = races_data.where(races_data['year']==2018).dropna()
data_2018 = data_2018.merge(diverstanding_data,on='raceId').dropna()
data_2018 = data_2018.merge(drivers_data,on='driverId').dropna()
data_2018.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2018 = data_2018.sort_values(['round','position'])
data_2018
drivers = data_2018['code'].unique()
c = data_2018.groupby(by='code').max().sort_values('points',ascending=False)
c['Final'] = range(1,len(c['year'])+1)
c = c['Final']
data_2018 = data_2018.merge(c,on='code').sort_values(['round','Final'])
fig = px.bar(data_2018, x="code", y="points", color="code",
animation_frame="name", animation_group="code", range_y=[0,450])
fig.show()
fig29 = go.Figure()
fig30 = go.Figure()
for i in drivers:
d = data_2018.where(data_2018['code'] == i).dropna().sort_values(by='round')
fig29.add_traces(go.Scatter(x=d['name'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=driver_teams_color_2018[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2018[i]['dash'])))
fig30.add_traces(go.Scatter(x=d['name'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=driver_teams_color_2018[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2018[i]['dash'])))
fig29.show()
fig30['layout']['yaxis']['autorange'] = "reversed"
fig30.show()
data_teams_2018 = races_data.where(races_data['year']==2018).dropna()
data_teams_2018 = data_teams_2018.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2018 = data_teams_2018.merge(constructors_data,on='constructorId').dropna()
data_teams_2018.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2018 = data_teams_2018.sort_values(['round','position'])
constructors = data_teams_2018['name_y'].unique()
data_teams_2018
| year | round | circuitId | name_x | points | position | positionText | wins | constructorRef | name_y | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2018.0 | 1.0 | 1.0 | Australian Grand Prix | 40.0 | 1 | 1 | 1 | ferrari | Ferrari |
| 21 | 2018.0 | 1.0 | 1.0 | Australian Grand Prix | 22.0 | 2 | 2 | 0 | mercedes | Mercedes |
| 42 | 2018.0 | 1.0 | 1.0 | Australian Grand Prix | 20.0 | 3 | 3 | 0 | red_bull | Red Bull |
| 63 | 2018.0 | 1.0 | 1.0 | Australian Grand Prix | 12.0 | 4 | 4 | 0 | mclaren | McLaren |
| 84 | 2018.0 | 1.0 | 1.0 | Australian Grand Prix | 7.0 | 5 | 5 | 0 | renault | Renault |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 83 | 2018.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 62.0 | 6 | 6 | 0 | mclaren | McLaren |
| 125 | 2018.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 52.0 | 7 | 7 | 0 | force_india | Force India |
| 146 | 2018.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 48.0 | 8 | 8 | 0 | sauber | Sauber |
| 188 | 2018.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 33.0 | 9 | 9 | 0 | toro_rosso | Toro Rosso |
| 167 | 2018.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 7.0 | 10 | 10 | 0 | williams | Williams |
210 rows × 10 columns
fig31 = go.Figure()
fig32 = go.Figure()
for i in constructors:
d = data_teams_2018.where(data_teams_2018['name_y'] == i).dropna()
fig31.add_trace(go.Scatter(x=d['name_x'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=teams_color_2018[i]['color'],opacity=0.75)))
fig32.add_trace(go.Scatter(x=d['name_x'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=teams_color_2018[i]['color'],opacity=0.75)))
fig31.show()
fig32['layout']['yaxis']['autorange'] = "reversed"
fig32.show()
teams_color_2019 = {'Red Bull':dict(color='#004c6c'),
'Renault':dict(color='#FFF500'),
'McLaren':dict(color='#FF8700'),
'Ferrari':dict(color='#C00000'),
'Mercedes':dict(color='#00D2BE'),
'Williams':dict(color='#0082FA'),
'Toro Rosso':dict(color='#011AE3'),
'Racing Point':dict(color='#F596C8'),
'Haas F1 Team':dict(color='#ed1a3b'),
'Alfa Romeo':dict(color='#960000')
}
driver_teams_color_2019 = {'VER':dict(color='#004c6c',dash='solid'),
'GAS':dict(color='#004c6c',dash='dash'),
'ALB':dict(color='#004c6c',dash='dashdot'),
'SAI':dict(color='#FF8700',dash='solid'),
'NOR':dict(color='#FF8700',dash='dash'),
'VET':dict(color='#C00000',dash='solid'),
'LEC':dict(color='#C00000',dash='dash'),
'HAM':dict(color='#00D2BE',dash='solid'),
'BOT':dict(color='#00D2BE',dash='dash'),
'GRO':dict(color='#ed1a3b',dash='solid'),
'MAG':dict(color='#ed1a3b',dash='dash'),
'RUS':dict(color='#0082FA',dash='solid'),
'KUB':dict(color='#0082FA',dash='dash'),
'PER':dict(color='#F596C8',dash='solid'),
'STR':dict(color='#F596C8',dash='dash'),
'RAI':dict(color='#960000',dash='solid'),
'GIO':dict(color='#960000',dash='dash'),
'ALB':dict(color='#011AE3',dash='solid'),
'GAS':dict(color='#011AE3',dash='dash'),
'KVY':dict(color='#011AE3',dash='dashdot'),
'RIC':dict(color='#FFF500',dash='solid'),
'HUL':dict(color='#FFF500',dash='dash')
}
data_2019 = races_data.where(races_data['year']==2019).dropna()
data_2019 = data_2019.merge(diverstanding_data,on='raceId').dropna()
data_2019 = data_2019.merge(drivers_data,on='driverId').dropna()
data_2019.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2019 = data_2019.sort_values(['round','position'])
data_2019
drivers = data_2019['code'].unique()
c = data_2019.groupby(by='code').max().sort_values('points',ascending=False)
c['Final'] = range(1,len(c['year'])+1)
c = c['Final']
data_2019 = data_2019.merge(c,on='code').sort_values(['round','Final'])
fig = px.bar(data_2019, x="code", y="points", color="code",
animation_frame="name", animation_group="code", range_y=[0,450])
fig.show()
fig33 = go.Figure()
fig34 = go.Figure()
for i in drivers:
d = data_2019.where(data_2019['code'] == i).dropna().sort_values(by='round')
fig33.add_traces(go.Scatter(x=d['name'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=driver_teams_color_2019[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2019[i]['dash'])))
fig34.add_traces(go.Scatter(x=d['name'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=driver_teams_color_2019[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2019[i]['dash'])))
fig33.show()
fig34['layout']['yaxis']['autorange'] = "reversed"
fig34.show()
data_teams_2019 = races_data.where(races_data['year']==2019).dropna()
data_teams_2019 = data_teams_2019.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2019 = data_teams_2019.merge(constructors_data,on='constructorId').dropna()
data_teams_2019.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2019 = data_teams_2019.sort_values(['round','position'])
constructors = data_teams_2019['name_y'].unique()
data_teams_2019
| year | round | circuitId | name_x | points | position | positionText | wins | constructorRef | name_y | |
|---|---|---|---|---|---|---|---|---|---|---|
| 84 | 2019.0 | 1.0 | 1.0 | Australian Grand Prix | 44.0 | 1 | 1 | 1 | mercedes | Mercedes |
| 42 | 2019.0 | 1.0 | 1.0 | Australian Grand Prix | 22.0 | 2 | 2 | 0 | ferrari | Ferrari |
| 63 | 2019.0 | 1.0 | 1.0 | Australian Grand Prix | 15.0 | 3 | 3 | 0 | red_bull | Red Bull |
| 21 | 2019.0 | 1.0 | 1.0 | Australian Grand Prix | 8.0 | 4 | 4 | 0 | haas | Haas F1 Team |
| 0 | 2019.0 | 1.0 | 1.0 | Australian Grand Prix | 6.0 | 5 | 5 | 0 | renault | Renault |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 167 | 2019.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 85.0 | 6 | 6 | 0 | toro_rosso | Toro Rosso |
| 146 | 2019.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 73.0 | 7 | 7 | 0 | racing_point | Racing Point |
| 125 | 2019.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 57.0 | 8 | 8 | 0 | alfa | Alfa Romeo |
| 41 | 2019.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 28.0 | 9 | 9 | 0 | haas | Haas F1 Team |
| 209 | 2019.0 | 21.0 | 24.0 | Abu Dhabi Grand Prix | 1.0 | 10 | 10 | 0 | williams | Williams |
210 rows × 10 columns
fig35 = go.Figure()
fig36 = go.Figure()
for i in constructors:
d = data_teams_2019.where(data_teams_2019['name_y'] == i).dropna()
fig35.add_trace(go.Scatter(x=d['name_x'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=teams_color_2019[i]['color'],opacity=0.75)))
fig36.add_trace(go.Scatter(x=d['name_x'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=teams_color_2019[i]['color'],opacity=0.75)))
fig35.show()
fig36['layout']['yaxis']['autorange'] = "reversed"
fig36.show()
teams_color_2020 = {'Red Bull':dict(color='#004c6c'),
'Renault':dict(color='#FFF500'),
'McLaren':dict(color='#FF8700'),
'Ferrari':dict(color='#C00000'),
'Mercedes':dict(color='#00D2BE'),
'Williams':dict(color='#0082FA'),
'AlphaTauri':dict(color='#011AE3'),
'Racing Point':dict(color='#F596C8'),
'Haas F1 Team':dict(color='#ed1a3b'),
'Alfa Romeo':dict(color='#960000')
}
driver_teams_color_2020 = {'VER':dict(color='#004c6c',dash='solid'),
'ALB':dict(color='#004c6c',dash='dashdot'),
'SAI':dict(color='#FF8700',dash='solid'),
'NOR':dict(color='#FF8700',dash='dash'),
'VET':dict(color='#C00000',dash='solid'),
'LEC':dict(color='#C00000',dash='dash'),
'HAM':dict(color='#00D2BE',dash='solid'),
'BOT':dict(color='#00D2BE',dash='dash'),
'RUS':dict(color='#00D2BE',dash='dashdot'),
'GRO':dict(color='#ed1a3b',dash='solid'),
'MAG':dict(color='#ed1a3b',dash='dash'),
'FIT':dict(color='#ed1a3b',dash='dashdot'),
'RUS':dict(color='#0082FA',dash='solid'),
'LAT':dict(color='#0082FA',dash='dash'),
'AIT':dict(color='#0082FA',dash='dashdot'),
'PER':dict(color='#F596C8',dash='solid'),
'STR':dict(color='#F596C8',dash='dash'),
'HUL':dict(color='#F596C8',dash='dashdot'),
'RAI':dict(color='#960000',dash='solid'),
'GIO':dict(color='#960000',dash='dash'),
'GAS':dict(color='#011AE3',dash='solid'),
'KVY':dict(color='#011AE3',dash='dash'),
'RIC':dict(color='#FFF500',dash='solid'),
'OCO':dict(color='#FFF500',dash='dash')
}
data_2020 = races_data.where(races_data['year']==2020).dropna()
data_2020 = data_2020.merge(diverstanding_data,on='raceId').dropna()
data_2020 = data_2020.merge(drivers_data,on='driverId').dropna()
data_2020.drop(columns=['date','time','url_x','url_y','driverStandingsId','driverId','dob','number','nationality','raceId'],inplace=True)
data_2020 = data_2020.sort_values(['round','position'])
data_2020
drivers = data_2020['code'].unique()
c = data_2020.groupby(by='code').max().sort_values('points',ascending=False)
c['Final'] = range(1,len(c['year'])+1)
c = c['Final']
data_2020 = data_2020.merge(c,on='code').sort_values(['round','Final'])
fig = px.bar(data_2020, x="code", y="points", color="code",
animation_frame="name", animation_group="code", range_y=[0,350])
fig.show()
fig37 = go.Figure()
fig38 = go.Figure()
for i in drivers:
d = data_2020.where(data_2020['code'] == i).dropna().sort_values(by='round')
fig37.add_traces(go.Scatter(x=d['name'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=driver_teams_color_2020[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2020[i]['dash'])))
fig38.add_traces(go.Scatter(x=d['name'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=driver_teams_color_2020[i]['color'],
opacity=0.75),
line=dict(dash=driver_teams_color_2020[i]['dash'])))
fig37.show()
fig38['layout']['yaxis']['autorange'] = "reversed"
fig38.show()
data_teams_2020 = races_data.where(races_data['year']==2020).dropna()
data_teams_2020 = data_teams_2020.merge(constructorstanding_data,on='raceId').dropna()
data_teams_2020 = data_teams_2020.merge(constructors_data,on='constructorId').dropna()
data_teams_2020.drop(columns=['date','time','url_x','url_y','constructorStandingsId','constructorId','nationality','raceId'],inplace=True)
data_teams_2020 = data_teams_2020.sort_values(['round','position'])
constructors = data_teams_2020['name_y'].unique()
data_teams_2020
| year | round | circuitId | name_x | points | position | positionText | wins | constructorRef | name_y | |
|---|---|---|---|---|---|---|---|---|---|---|
| 153 | 2020.0 | 1.0 | 70.0 | Austrian Grand Prix | 37.0 | 1 | 1 | 1 | mercedes | Mercedes |
| 119 | 2020.0 | 1.0 | 70.0 | Austrian Grand Prix | 26.0 | 2 | 2 | 0 | mclaren | McLaren |
| 136 | 2020.0 | 1.0 | 70.0 | Austrian Grand Prix | 19.0 | 3 | 3 | 0 | ferrari | Ferrari |
| 102 | 2020.0 | 1.0 | 70.0 | Austrian Grand Prix | 8.0 | 4 | 4 | 0 | racing_point | Racing Point |
| 85 | 2020.0 | 1.0 | 70.0 | Austrian Grand Prix | 6.0 | 5 | 5 | 0 | alphatauri | AlphaTauri |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 152 | 2020.0 | 17.0 | 24.0 | Abu Dhabi Grand Prix | 131.0 | 6 | 6 | 0 | ferrari | Ferrari |
| 101 | 2020.0 | 17.0 | 24.0 | Abu Dhabi Grand Prix | 107.0 | 7 | 7 | 1 | alphatauri | AlphaTauri |
| 67 | 2020.0 | 17.0 | 24.0 | Abu Dhabi Grand Prix | 8.0 | 8 | 8 | 0 | alfa | Alfa Romeo |
| 16 | 2020.0 | 17.0 | 24.0 | Abu Dhabi Grand Prix | 3.0 | 9 | 9 | 0 | haas | Haas F1 Team |
| 50 | 2020.0 | 17.0 | 24.0 | Abu Dhabi Grand Prix | 0.0 | 10 | 10 | 0 | williams | Williams |
170 rows × 10 columns
fig39 = go.Figure()
fig40 = go.Figure()
for i in constructors:
d = data_teams_2020.where(data_teams_2020['name_y'] == i).dropna()
fig39.add_trace(go.Scatter(x=d['name_x'],
y=d['points'],
name=i,
mode='lines+markers',
marker=dict(color=teams_color_2020[i]['color'],opacity=0.75)))
fig40.add_trace(go.Scatter(x=d['name_x'],
y=d['position'],
name=i,
mode='lines+markers',
hovertext=d.points,
marker=dict(color=teams_color_2020[i]['color'],opacity=0.75)))
fig39.show()
fig40['layout']['yaxis']['autorange'] = "reversed"
fig40.show()